/* * Miserable Mind * http://www.miserablemind.com | Twitter: @lrimkus * The MIT License (MIT) */ package com.miserablemind.api.consumer.tradeking.api.impl; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.joda.JodaModule; import com.miserablemind.api.consumer.tradeking.api.*; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.social.oauth1.AbstractOAuth1ApiBinding; public class TradeKingTemplate extends AbstractOAuth1ApiBinding implements TradeKingOperations { private AccountOperations accountOperations; private WatchlistOperations watchlistOperations; private MarketOperations marketOperations; private StreamingOperations streamingOperations; private APIOperations apiOperations; public TradeKingTemplate(String consumerKey, String consumerSecret, String accessToken, String secret) { super(consumerKey, consumerSecret, accessToken, secret); } @Override public AccountOperations getAccountOperations() { if (null == this.accountOperations) this.accountOperations = new AccountTemplate(this.getRestTemplate()); return this.accountOperations; } @Override public WatchlistOperations getWatchlistOperations() { if (null == this.watchlistOperations) this.watchlistOperations = new WatchlistTemplate(this.getRestTemplate()); return this.watchlistOperations; } @Override public MarketOperations getMarketOperations() { if (null == this.marketOperations) this.marketOperations = new MarketTemplate(this.getRestTemplate()); return this.marketOperations; } @Override public StreamingOperations getStreamingOperations() { if (null == this.streamingOperations) this.streamingOperations = new StreamingTemplate(this.getRestTemplate()); return this.streamingOperations; } @Override public APIOperations getAPIOperations() { if (null == this.apiOperations) this.apiOperations = new APITemplate(this.getRestTemplate()); return this.apiOperations; } @Override protected MappingJackson2HttpMessageConverter getJsonMessageConverter() { MappingJackson2HttpMessageConverter converter = super.getJsonMessageConverter(); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true); mapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true); mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); mapper.registerModule(new TradeKingModule()); mapper.registerModule(new JodaModule()); converter.setObjectMapper(mapper); return converter; } }